Métodos de Predictivos (Clasificación o Aprendizaje-Supervisado)


Índices de Calidad del Modelo y Funciones Auxiliares

Se necesita cargar las siguientes librerías

Muestra la distribución de la variable a predecir

Muestra la distribución de una variable numérica según la variable a predecir

Muestra la distribución de una variable categórica según la variable a predecir

poder.predictivo.categorica<-function(datos,variable.predecir,variable.comparar,ylab="",xlab="", 
                                      main=paste("Densidad de la variable",variable.comparar,'según',variable.predecir),
                                      col=NA){
  gg_color <- function (n) {
     hues <- seq(15, 375, length = n + 1)
     hcl(h = hues, l = 65, c = 100)[1:n]
  }
  if(missing(variable.predecir) | !(variable.predecir %in% colnames(datos))){
    stop("variable.predecir tiene que ser ingresada y ser un nombre de columna", call. = FALSE )
  }
  if(missing(variable.comparar) | !(variable.comparar %in% colnames(datos)) | 
     !(is.factor(datos[,variable.comparar]) | is.character(datos[,variable.comparar])) ){
    stop("variable.comparar tiene que ser ingresada y ser un nombre de columna categórica", call. = FALSE )
  }
  
  if(is.character(datos[,variable.predecir]) | is.factor(datos[,variable.predecir])){
    if(length(col) == 0 || is.na(col)){
      col <- gg_color(length(unique(datos[,variable.predecir])))
    }else{
      col <- rep(col,length(unique(datos[,variable.predecir])))
    }
    
    datos2 <- datos %>%
      dplyr::group_by_(variable.comparar, variable.predecir) %>%
      dplyr::summarise(count = n())
    
    if(variable.comparar != variable.predecir){
      datos2 <-   datos2 %>% dplyr::group_by_(variable.comparar)
    }
    datos2 <- datos2 %>% dplyr::mutate(prop = round(count/sum(count),4))
  
    ggplot(data = datos2, mapping = aes_string(x = variable.comparar, y = "prop", fill = variable.predecir)) +
      geom_col(position = "fill") +
      geom_text(aes(label = glue("{percent(prop)} ({count})")), position = position_stack(vjust = .5), color = "white") +
      scale_y_continuous(label = percent) +
      labs(y =  xlab, x  = ylab, title = main) +
      scale_fill_manual(values = col, name = variable.predecir) +
      theme(legend.position = "bottom")+
      coord_flip()
    
  }else{
    stop("La variable a predecir tienen que ser de tipo factor o character", call. = FALSE )
  }
}

Índices para matrices NxN

El método Redes Neuronales

Ejemplo Iris

'data.frame':   150 obs. of  5 variables:
 $ s.largo: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
 $ s.ancho: num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
 $ p.largo: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
 $ p.ancho: num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
 $ tipo   : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...

Distribución de las categorías

Predicción

Vamos a generar al azar una tabla de testing de tamaño 50 y una tabla de aprendizaje de tamaño 100.

Paquete nnet

Se cargan las librerías

Se genera el modelo

Es importante tomar en cuenta los siguientes parámetros:

  • size = número de de nodos en la capa oculta.
  • rang = pesos iniciales.
  • decay = grado de decrecimiento de los pesos.
  • maxit = número máximo de iteraciones (default=100).
  • MaxNWts = número máximo de pesos (default=1000).
a 4-4-3 network with 35 weights
inputs: s.largo s.ancho p.largo p.ancho 
output(s): tipo 
options were - softmax modelling  decay=5e-04

Se genera la predicción

 [1] "setosa"     "versicolor" "setosa"     "virginica"  "setosa"    
 [6] "setosa"     "versicolor" "setosa"     "setosa"     "virginica" 
[11] "virginica"  "virginica"  "versicolor" "virginica"  "setosa"    
[16] "setosa"     "virginica"  "setosa"     "virginica"  "setosa"    
[21] "versicolor" "versicolor" "setosa"     "setosa"     "versicolor"
[26] "setosa"     "virginica"  "setosa"     "virginica"  "virginica" 
[31] "versicolor" "setosa"     "versicolor" "virginica"  "setosa"    
[36] "virginica"  "versicolor" "setosa"     "virginica"  "setosa"    
[41] "versicolor" "versicolor" "versicolor" "versicolor" "virginica" 
[46] "virginica"  "versicolor" "versicolor" "versicolor" "virginica" 

Se genera la matriz de confusión

            prediccion
             setosa versicolor virginica
  setosa         18          0         0
  versicolor      0         16         2
  virginica       0          0        14

Índices de calidad de la predicción

$`Matriz de Confusión`
            prediccion
             setosa versicolor virginica
  setosa         18          0         0
  versicolor      0         16         2
  virginica       0          0        14

$`Precisión Global`
[1] 0.96

$`Error Global`
[1] 0.04

$`Precisión por categoría`
    setosa versicolor  virginica 
 1.0000000  0.8888889  1.0000000 

Paquete trainR

Se cargan las librerías

Se genera el modelo

a 4-4-3 network with 35 weights
inputs: s.largo s.ancho p.largo p.ancho 
output(s): tipo 
options were - softmax modelling  decay=5e-04

Se genera la predicción

 [1] setosa     versicolor setosa     virginica  setosa     setosa    
 [7] versicolor setosa     setosa     virginica  virginica  virginica 
[13] versicolor virginica  setosa     setosa     virginica  setosa    
[19] virginica  setosa     versicolor versicolor setosa     setosa    
[25] versicolor setosa     virginica  setosa     virginica  virginica 
[31] versicolor setosa     versicolor virginica  setosa     virginica 
[37] versicolor setosa     virginica  setosa     versicolor versicolor
[43] versicolor versicolor virginica  virginica  versicolor versicolor
[49] versicolor virginica 
Levels: setosa versicolor virginica

Se genera la matriz de confusión

            prediction
real         setosa versicolor virginica
  setosa         18          0         0
  versicolor      0         16         2
  virginica       0          0        14

Índices de calidad de la predicción


Confusion Matrix:
            prediction
real         setosa versicolor virginica
  setosa         18          0         0
  versicolor      0         16         2
  virginica       0          0        14

Overall Accuracy: 0.9600
Overall Error:    0.0400

Category Accuracy:

       setosa   versicolor    virginica
     1.000000     0.888889     1.000000

Podemos omitir crear la matriz de confusión


Confusion Matrix:
            prediction
real         setosa versicolor virginica
  setosa         18          0         0
  versicolor      0         16         2
  virginica       0          0        14

Overall Accuracy: 0.9600
Overall Error:    0.0400

Category Accuracy:

       setosa   versicolor    virginica
     1.000000     0.888889     1.000000

Selección de Variables

Utilizando los datos que previamente cargamos

Podemos visualizar la distribución de las variables numéricas según la variable a predecir.

Predicción con selección de variables.

Utilizando los mismo datos para prueba (ttesting) y aprendizaje (taprendizaje) que creamos anteriormente.

Paquete nnet

Se cargan las librerías

Se genera el modelo

a 2-4-3 network with 27 weights
inputs: p.largo p.ancho 
output(s): tipo 
options were - softmax modelling  decay=5e-04

Se genera la predicción

 [1] "setosa"     "versicolor" "setosa"     "virginica"  "setosa"    
 [6] "setosa"     "versicolor" "setosa"     "setosa"     "virginica" 
[11] "virginica"  "versicolor" "versicolor" "virginica"  "setosa"    
[16] "setosa"     "virginica"  "setosa"     "virginica"  "setosa"    
[21] "versicolor" "versicolor" "setosa"     "setosa"     "versicolor"
[26] "setosa"     "virginica"  "setosa"     "virginica"  "virginica" 
[31] "versicolor" "setosa"     "versicolor" "virginica"  "setosa"    
[36] "virginica"  "versicolor" "setosa"     "virginica"  "setosa"    
[41] "versicolor" "versicolor" "versicolor" "versicolor" "versicolor"
[46] "virginica"  "versicolor" "versicolor" "versicolor" "virginica" 

Se genera la matriz de confusión

            prediccion
             setosa versicolor virginica
  setosa         18          0         0
  versicolor      0         17         1
  virginica       0          1        13

Índices de calidad de la predicción

$`Matriz de Confusión`
            prediccion
             setosa versicolor virginica
  setosa         18          0         0
  versicolor      0         17         1
  virginica       0          1        13

$`Precisión Global`
[1] 0.96

$`Error Global`
[1] 0.04

$`Precisión por categoría`
    setosa versicolor  virginica 
 1.0000000  0.9444444  0.9285714 

Paquete trainR

Se cargan las librerías

Se genera el modelo

a 2-4-3 network with 27 weights
inputs: p.largo p.ancho 
output(s): tipo 
options were - softmax modelling  decay=5e-04

Se genera la predicción

 [1] setosa     versicolor setosa     virginica  setosa     setosa    
 [7] versicolor setosa     setosa     virginica  virginica  versicolor
[13] versicolor virginica  setosa     setosa     virginica  setosa    
[19] virginica  setosa     versicolor versicolor setosa     setosa    
[25] versicolor setosa     virginica  setosa     virginica  virginica 
[31] versicolor setosa     versicolor virginica  setosa     virginica 
[37] versicolor setosa     virginica  setosa     versicolor versicolor
[43] versicolor versicolor versicolor virginica  versicolor versicolor
[49] versicolor virginica 
Levels: setosa versicolor virginica

Se genera la matriz de confusión

            prediction
real         setosa versicolor virginica
  setosa         18          0         0
  versicolor      0         17         1
  virginica       0          1        13

Índices de calidad de la predicción


Confusion Matrix:
            prediction
real         setosa versicolor virginica
  setosa         18          0         0
  versicolor      0         17         1
  virginica       0          1        13

Overall Accuracy: 0.9600
Overall Error:    0.0400

Category Accuracy:

       setosa   versicolor    virginica
     1.000000     0.944444     0.928571

Podemos omitir crear la matriz de confusión


Confusion Matrix:
            prediction
real         setosa versicolor virginica
  setosa         18          0         0
  versicolor      0         17         1
  virginica       0          1        13

Overall Accuracy: 0.9600
Overall Error:    0.0400

Category Accuracy:

       setosa   versicolor    virginica
     1.000000     0.944444     0.928571


Ejemplo Scoring

'data.frame':   5000 obs. of  6 variables:
 $ MontoCredito     : int  14327 111404 21128 15426 10351 27060 243369 16300 18319 107037 ...
 $ IngresoNeto      : Ord.factor w/ 2 levels "1"<"2": 1 1 1 2 1 1 1 2 2 2 ...
 $ CoefCreditoAvaluo: Ord.factor w/ 12 levels "1"<"2"<"3"<"4"<..: 1 1 1 1 1 1 1 1 1 1 ...
 $ MontoCuota       : Factor w/ 4 levels "Alto","Bajo",..: 4 4 4 4 4 4 4 4 4 4 ...
 $ GradoAcademico   : Factor w/ 2 levels "Bachiller","Licenciatura": 1 1 1 1 1 1 1 1 1 1 ...
 $ BuenPagador      : Factor w/ 2 levels "No","Si": 2 2 2 2 2 2 2 2 2 2 ...

Distribución de las categorías

Predicción

Vamos a generar al azar una tabla de testing con 15% de los datos y una tabla de aprendizaje con 85%

Paquete nnet

Se cargan las librerías

Se genera el modelo

a 17-200-1 network with 3801 weights
inputs: MontoCredito IngresoNeto.L CoefCreditoAvaluo.L CoefCreditoAvaluo.Q CoefCreditoAvaluo.C CoefCreditoAvaluo^4 CoefCreditoAvaluo^5 CoefCreditoAvaluo^6 CoefCreditoAvaluo^7 CoefCreditoAvaluo^8 CoefCreditoAvaluo^9 CoefCreditoAvaluo^10 CoefCreditoAvaluo^11 MontoCuotaBajo MontoCuotaMedio MontoCuotaMuyBajo GradoAcademicoLicenciatura 
output(s): BuenPagador 
options were - entropy fitting  decay=5e-04

Se genera la predicción

  [1] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
 [15] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
 [29] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
 [43] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
 [57] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
 [71] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
 [85] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
 [99] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[113] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[127] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[141] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[155] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[169] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[183] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[197] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[211] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[225] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[239] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[253] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[267] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[281] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[295] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[309] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[323] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[337] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[351] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[365] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[379] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[393] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[407] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[421] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[435] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[449] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[463] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[477] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[491] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[505] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[519] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[533] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[547] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[561] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[575] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[589] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[603] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[617] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[631] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[645] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[659] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[673] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[687] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[701] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[715] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[729] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[743] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"

Se genera la matriz de confusión

    prediccion
      Si
  No  93
  Si 657

Índices de calidad de la predicción

$`Matriz de Confusión`
    prediccion
      Si
  No  93
  Si 657

$`Precisión Global`
[1] 0.124

$`Error Global`
[1] 0.876

$`Precisión por categoría`
       No        Si 
1.0000000 0.1415525 

Paquete trainR

Se cargan las librerías

Se genera el modelo

a 17-200-1 network with 3801 weights
inputs: MontoCredito IngresoNeto.L CoefCreditoAvaluo.L CoefCreditoAvaluo.Q CoefCreditoAvaluo.C CoefCreditoAvaluo^4 CoefCreditoAvaluo^5 CoefCreditoAvaluo^6 CoefCreditoAvaluo^7 CoefCreditoAvaluo^8 CoefCreditoAvaluo^9 CoefCreditoAvaluo^10 CoefCreditoAvaluo^11 MontoCuotaBajo MontoCuotaMedio MontoCuotaMuyBajo GradoAcademicoLicenciatura 
output(s): BuenPagador 
options were - entropy fitting  decay=5e-04

Se genera la predicción

  [1] No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
 [24] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si No Si
 [47] Si Si No Si Si No Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si Si
 [70] Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
 [93] No Si Si Si Si Si No Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si
[116] Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si
[139] Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si Si No Si Si Si Si Si
[162] Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si Si No Si Si Si No Si
[185] Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[208] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[231] Si Si Si Si Si Si Si Si No No Si Si Si Si Si Si Si Si Si Si Si No Si
[254] Si Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si No Si Si Si Si
[277] Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si Si Si Si No Si Si
[300] Si Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si No Si No Si Si Si
[323] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[346] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[369] No Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si No No Si Si Si
[392] Si Si Si Si Si Si No Si Si Si Si Si Si Si No Si Si Si Si Si Si Si Si
[415] Si Si Si Si Si Si No Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si
[438] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si No Si Si
[461] No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si
[484] No Si Si No No Si Si Si Si Si Si Si No Si No Si Si Si Si Si Si Si Si
[507] Si Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si No Si Si Si Si Si
[530] Si Si No Si No Si No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[553] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[576] Si Si Si Si Si Si No No Si Si No Si No Si Si Si Si Si Si No Si Si Si
[599] Si Si Si Si No Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si
[622] Si No Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si No Si Si
[645] Si Si Si Si Si Si Si Si Si Si Si Si No No Si Si No Si Si No Si Si Si
[668] Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si
[691] Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si No Si Si Si Si
[714] Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si No Si No Si Si Si Si
[737] Si Si Si Si No Si Si Si Si Si Si No Si Si
Levels: No Si

Se genera la matriz de confusión

    prediction
real  No  Si
  No  60  33
  Si  12 645

Índices de calidad de la predicción


Confusion Matrix:
    prediction
real  No  Si
  No  60  33
  Si  12 645

Overall Accuracy: 0.9400
Overall Error:    0.0600

Category Accuracy:

           No           Si
     0.645161     0.981735

Podemos omitir crear la matriz de confusión


Confusion Matrix:
    prediction
real  No  Si
  No  60  33
  Si  12 645

Overall Accuracy: 0.9400
Overall Error:    0.0600

Category Accuracy:

           No           Si
     0.645161     0.981735

Selección de Variables

Utilizando los datos que previamente cargamos

Podemos visualizar la distribución de las variables numéricas y categóricas según la variable a predecir.

Predicción con selección de variables.

Utilizando los mismo datos para prueba (ttesting) y aprendizaje (taprendizaje) que creamos anteriormente.

Paquete nnet

Se cargan las librerías

Se genera el modelo

a 13-200-1 network with 3001 weights
inputs: CoefCreditoAvaluo.L CoefCreditoAvaluo.Q CoefCreditoAvaluo.C CoefCreditoAvaluo^4 CoefCreditoAvaluo^5 CoefCreditoAvaluo^6 CoefCreditoAvaluo^7 CoefCreditoAvaluo^8 CoefCreditoAvaluo^9 CoefCreditoAvaluo^10 CoefCreditoAvaluo^11 MontoCredito IngresoNeto.L 
output(s): BuenPagador 
options were - entropy fitting  decay=5e-04

Se genera la predicción

  [1] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
 [15] "Si" "Si" "No" "Si" "Si" "Si" "Si" "Si" "No" "Si" "Si" "Si" "Si" "Si"
 [29] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
 [43] "Si" "Si" "No" "Si" "Si" "Si" "No" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
 [57] "Si" "Si" "Si" "Si" "No" "Si" "Si" "Si" "Si" "No" "No" "Si" "No" "Si"
 [71] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
 [85] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
 [99] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "No" "Si"
[113] "Si" "Si" "No" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[127] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[141] "Si" "Si" "Si" "Si" "Si" "Si" "No" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[155] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[169] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[183] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[197] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[211] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[225] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[239] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[253] "Si" "No" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[267] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "No" "Si" "Si" "Si" "Si" "Si" "Si"
[281] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[295] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "No" "Si" "Si" "Si" "Si"
[309] "Si" "Si" "Si" "Si" "Si" "No" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "No"
[323] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[337] "Si" "No" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[351] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[365] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[379] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[393] "Si" "Si" "Si" "Si" "Si" "No" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "No"
[407] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "No" "Si" "Si" "Si" "Si" "Si"
[421] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "No" "Si"
[435] "Si" "Si" "Si" "Si" "Si" "Si" "No" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[449] "Si" "Si" "Si" "Si" "No" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[463] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[477] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[491] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[505] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[519] "Si" "No" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "No" "Si"
[533] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[547] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[561] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[575] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "No" "Si" "Si" "Si" "Si" "Si" "Si"
[589] "Si" "Si" "Si" "Si" "Si" "Si" "No" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[603] "No" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[617] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "No" "Si" "Si" "Si" "No"
[631] "Si" "Si" "Si" "Si" "Si" "No" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[645] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "No" "Si" "Si" "Si"
[659] "Si" "Si" "No" "Si" "Si" "No" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[673] "Si" "Si" "Si" "Si" "No" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[687] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[701] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "No" "Si" "Si" "Si" "Si" "Si"
[715] "No" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[729] "Si" "Si" "Si" "No" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"
[743] "Si" "Si" "Si" "Si" "Si" "Si" "Si" "Si"

Se genera la matriz de confusión

    prediccion
      No  Si
  No  22  71
  Si  16 641

Índices de calidad de la predicción

$`Matriz de Confusión`
    prediccion
      No  Si
  No  22  71
  Si  16 641

$`Precisión Global`
[1] 0.884

$`Error Global`
[1] 0.116

$`Precisión por categoría`
       No        Si 
0.2365591 0.9756469 

Paquete trainR

Se cargan las librerías

Se genera el modelo

a 13-200-1 network with 3001 weights
inputs: CoefCreditoAvaluo.L CoefCreditoAvaluo.Q CoefCreditoAvaluo.C CoefCreditoAvaluo^4 CoefCreditoAvaluo^5 CoefCreditoAvaluo^6 CoefCreditoAvaluo^7 CoefCreditoAvaluo^8 CoefCreditoAvaluo^9 CoefCreditoAvaluo^10 CoefCreditoAvaluo^11 MontoCredito IngresoNeto.L 
output(s): BuenPagador 
options were - entropy fitting  decay=5e-04

Se genera la predicción

  [1] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
 [24] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
 [47] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
 [70] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
 [93] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[116] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[139] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[162] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[185] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[208] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[231] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[254] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[277] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[300] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[323] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[346] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[369] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[392] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[415] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[438] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[461] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[484] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[507] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[530] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[553] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[576] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[599] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[622] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[645] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[668] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[691] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[714] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[737] Si Si Si Si Si Si Si Si Si Si Si Si Si Si
Levels: No Si

Se genera la matriz de confusión

    prediction
real  No  Si
  No   0  93
  Si   0 657

Índices de calidad de la predicción


Confusion Matrix:
    prediction
real  No  Si
  No   0  93
  Si   0 657

Overall Accuracy: 0.8760
Overall Error:    0.1240

Category Accuracy:

           No           Si
     0.000000     1.000000

Podemos omitir crear la matriz de confusión


Confusion Matrix:
    prediction
real  No  Si
  No   0  93
  Si   0 657

Overall Accuracy: 0.8760
Overall Error:    0.1240

Category Accuracy:

           No           Si
     0.000000     1.000000


Guardar en disco el modelo

Un mes después, por ejemplo, lee el modelo y hace predicciones

 [1] "virginica"  "virginica"  "virginica"  "setosa"     "versicolor"
 [6] "setosa"     "virginica"  "versicolor" "versicolor" "setosa"    
[11] "setosa"     "virginica"  "setosa"     "virginica"  "virginica" 
[16] "versicolor" "versicolor" "setosa"     "virginica"  "versicolor"
[21] "virginica"  "virginica"  "virginica"  "setosa"     "versicolor"
[26] "setosa"     "virginica"  "versicolor" "versicolor" "versicolor"
[31] "setosa"     "setosa"     "virginica"  "virginica"  "setosa"    
[36] "versicolor" "versicolor" "virginica"  "versicolor" "versicolor"
[41] "virginica"  "versicolor" "versicolor" "versicolor" "virginica" 
[46] "versicolor" "virginica"  "setosa"     "versicolor" "setosa"    
            prediccion
             setosa versicolor virginica
  setosa         13          0         0
  versicolor      0         17         1
  virginica       0          2        17
$`Matriz de Confusión`
            prediccion
             setosa versicolor virginica
  setosa         13          0         0
  versicolor      0         17         1
  virginica       0          2        17

$`Precisión Global`
[1] 0.94

$`Error Global`
[1] 0.06

$`Precisión por categoría`
    setosa versicolor  virginica 
 1.0000000  0.9444444  0.8947368